Traditional storage systems are designed for general data applications, e.g., database applications, email applications, file applications, or other information technology (“IT”) applications. The data pattern of these data applications is bursty and very application dependent. A concept of the amount of “load” on the storage system does not exist. Furthermore, there is no indication of whether the system has reached its limits. There may be performance indexes, e.g., read and write bandwidth, read and write input/output (“I/O”) latencies, and cache performance, such as cache hit ratio. These indexes reflect how the system is performing, but they do not indicate whether the system is overloaded. It is understandable that load indexes do not exist for general data applications since load indexes are difficult to define. Historically, IT devices, including servers, networking devices, and storage devices, implement best effort algorithms to receive, transmit, and store data with very little transparency to a user (e.g., application developers, solution integrators, system architects, system administrators, or other users) as to whether the storage system is overloaded.
For bursty traffic in general data applications, temporary congestion may have little impact to the overall data application requirements. However, load indexes are essential for rich media applications or applications that require a specific level of quality of service (“QOS”). For example, in video surveillance with hundreds of IP cameras storing data into a data storage system, it is important to know whether the data storage system is keeping up with the load or whether the limit has been reached and frames are dropped. If the limit has been met, then frames are dropped without the user being alerted to the situation.
Therefore, it is desirable to provide methods for indicating load indexes for a data storage system to a user for monitoring the load on the data storage system.